HPD Retrieval API
Search HPD Entity Request
URL: POST /api/{{PATH_NAME}}/v1/{{SLUG_NAME}}
Where:
PATH_NAME is mandatory and can be one of the following:
- organizationQuery
- locationQuery
- practitionerQuery
- practionerroleQuery
REQUEST PAYLOAD PATTERN
Search Payload Pattern
{
"organizationQuery": {{QUERY_OBJECT}},
"pageSize": 10,
"queryResultType": "{{RETURN_TYPE}}"
"sortBy": "{{FIELD_NAME}}",
"sortDirection": "{{SORT_DIRECTION}}"
}
Where:
- pageSize value must be numeric. This field is optional. Value is between 0 to 100 (inclusive). - queryResultType (optional) value can be one of the following:
- JsonAttribute - Default value
- FhirAttribute
- FhirBundleAttribute
- sortBy (optional)
- sortDirection (optional) can be either one of the following:
- ASC - for ascending order - Default value
- DESC - for descending order
- QUERY_OBJECT
{
"operator": "{{OPERATOR}}",
"queryGroup":
[
{
"operator": "{{OPERATOR}}",
"queryGroups": [],
"queryCriteria":
[
{
"name": {{FIELD_NAME}},
"operator": "{{COMPARER}}",
"value":"{{VALUE}}"
}
]
},
],
"queryCriteria":
[
{
"name": "{{FIELD_NAME}}",
"operator": "{{COMPARER}}",
"value": "{{VALUE}}"
}
]
}
Where:
- operator can be one of the following values:
- AND - Combine all query criteria as AND - Default value
- OR - Combine all query criteria as OR
- queryCriteria.operator (also called comparer) can be one of the following values:
- EQUALS
- STRINGEQUALS
- NOT_EQUALS
- GREATER_THAN
- GREATER_THAN_OR_EQUAL
- LESS_THAN
- LESS_THAN_OR_EQUAL
- CONTAINS
- STARTS_WITH
- ENDS_WITH
- IN
- OR
- AND
- LIST_CONTAINS
- queryGroup - collection of queryCriteria to support complex queries
Validation Rule:
- Primary Query object key field must match with the pathname and is mandatory. If unmatched then issue error 400 (bad request)
- If queryCriteria is not empty then all key fields underneath it is mandatory, namely name, operator, value.
SAMPLE REQUEST PAYLOAD - SIMPLE QUERY
POST /api/practitionerRoleQuery/v1/hpd-practitioner-role-all-verbose
{
"practitionerRoleQuery": {
"operator": "AND",
"queryGroup": [],
"queryCriteria": [
{
"name": "cpn",
"operator": "STRINGEQUALS",
"value": "95ZZHW"
}]
},
"pageSize": 10,
"queryResultType": "FhirBundleAttribute",
"sortBy": "cpn",
"sortDirection": "ASC"
}
SAMPLE REQUEST PAYLOAD - COMPLEX QUERY
Sample Use Case: ((Org with id = "c294e55b-74e6-498d-8006-0e21e09c138e") AND (practitioner.value contains "Thomas" or CPN contains "Thomas" or rolecode.value contains "Thomas" or...))
"queryGroup":
{
"operator": "AND",
"queryGroups": [
{
"operator": "AND",
"queryGroups": [
{
"operator": "AND",
"queryGroups": [],
"queryCriteria": [
{
"name": "organisation/id",
"operator": "EQUAL",
"value": [
"c294e55b-74e6-498d-8006-0e21e09c138e"
]
}
]
},
{
"operator": "OR",
"queryGroups": [],
"queryCriteria": [
{
"name": "practitioner/value",
"operator": "CONTAINS",
"value": "Thomas"
},
{
"name": "cpn",
"operator": "CONTAINS",
"value": "Thomas"
},
{
"name": "roleCode/value",
"operator": "CONTAINS",
"value": "Thomas"
},
{
"name": "organisation/value",
"operator": "CONTAINS",
"value": "Thomas"
},
{
"name": "location/value",
"operator": "CONTAINS",
"value": "Thomas"
},
{
"name": "hpiId",
"operator": "CONTAINS",
"value": "Thomas"
},
{
"name": "registrationPrimaryId",
"operator": "CONTAINS",
"value": "Thomas"
},
{
"name": "issuerReference/value",
"operator": "CONTAINS",
"value": "Thomas"
},
{
"name": "primaryRegistrationStatus",
"operator": "CONTAINS",
"value": "Thomas"
},
{
"name": "allScopesOfPractice",
"operator": "CONTAINS",
"value": "Thomas"
}
]
}
],
"queryCriteria": []
},
{
"operator": "AND",
"queryGroups": [],
"queryCriteria": []
}
],
"queryCriteria": []
}